Cos'è cherry picking?

Il cherry picking è una tecnica di controllo della versione che permette di selezionare commit specifici da un ramo e applicarli a un altro. È diverso dal merge, che unisce tutti i cambiamenti da un ramo all'altro.

Quando usare il cherry picking:

  • Correggere bug specifici in rami multipli: Se un bugfix deve essere applicato a diverse versioni del software (es. rami release/1.0 e release/1.1), il cherry picking permette di evitare di unire l'intero ramo di sviluppo principale.
  • Riportare una funzionalità su un ramo precedente: Se una funzionalità è stata sviluppata su un ramo e si desidera utilizzarla in un altro ramo, ma non si vuole unire l'intero ramo di sviluppo.
  • Risolvere conflitti limitati: Invece di unire un intero ramo con molti conflitti, si possono selezionare i commit con cambiamenti necessari e risolverli singolarmente.

Come funziona il cherry picking:

  1. Il comando di cherry picking prende il cambiamento introdotto da un commit specifico.
  2. Crea un nuovo commit sul ramo di destinazione.
  3. Questo nuovo commit copia il cambiamento del commit originale.

Considerazioni importanti:

  • Cronologia: Il cherry picking altera la cronologia%20del%20repository perché crea nuovi commit anziché unire rami esistenti. Ciò può portare a confusione se non usato con cautela.
  • Conflitti: Il cherry picking può generare conflitti se il codice che si sta cercando di applicare dipende da altre modifiche non presenti nel ramo di destinazione. È necessario risolvere questi conflitti manualmente.
  • Commit duplicati: È importante evitare di cherry pickare lo stesso commit più volte nello stesso ramo, creando commit duplicati.
  • Alternative: Prima di usare il cherry picking, valutare se un merge regolare o una strategia di branching più appropriata possa essere una soluzione migliore. Il cherry picking è spesso considerato una tecnica da usare con parsimonia.